﻿Public Class frmAD_DangKyTaiKhoan 
    Private Function IsDNSMailAddr(ByVal addr As String) As Boolean
        'khai báo một số biến cần dùng
        Dim len As Integer
        Dim i As Integer
        Dim addarr() As Char
        Dim ch As Char
        'giả định kết quả sai
        IsDNSMailAddr = False
        'tìm độ dài chuỗi
        len = addr.Length
        'đổi chuỗi sang mảng các ký tự
        addarr = addr.ToCharArray()
        i = 0
        On Error GoTo test1
        'duyệt tìm thành phần <account>
        While (i < len) And (addarr(i) <> "@"c)
            ch = addarr(i)
            If (("0"c <= ch) And (ch <= "9"c)) Or (("a"c <= ch) And (ch <= "z"c)) Then
                i = i + 1
            Else
                'đã tìm được 1 ký tự không hợp cú pháp
                Exit Function
            End If
        End While
test1:
        i = i + 1
        'nếu hết chuỗi => không hợp cú pháp
        If i = len Then Exit Function
        On Error GoTo test2
        'duyệt tìm thành phần đầu tiên của <server>
        While (i < len) And (addarr(i) <> "."c)
            ch = addarr(i)
            If (("0"c <= ch) And (ch <= "9"c)) Or (("a"c <= ch) And (ch <= "z"c)) Then
                i = i + 1
            Else
                'đã tìm được 1 ký tự không hợp cú pháp
                Exit Function
            End If
        End While
test2:
        i = i + 1
        'nếu hết chuỗi => không hợp cú pháp
        If i = len Then Exit Function
        On Error GoTo test3
        'duyệt tìm các thành phần còn lại của <server>
        While (i < len)
            ch = addarr(i)
            If (("0"c <= ch) And (ch <= "9"c)) Or (("a"c <= ch) And (ch <= "z"c) Or ch = "."c) Then
                i = i + 1
            Else
                Exit Function
            End If
        End While
test3:
        'nếu chạy tới đây => hợp cú pháp
        'nếu cần hãy viết code kiểm tra xem địa chỉ có tồn tại ?
        Return True
    End Function
    Private Sub btnThoat_Click(sender As System.Object, e As System.EventArgs) Handles btnThoat.Click
        Me.Close()
    End Sub
    Private Function KiemTra() As Boolean
        If txtTenDangNhap.Text = "" Or txtMatKhau.Text = "" Or txtXacNhanMatKhau.Text = "" Or cbLoaiTaiKhoan.Text = "Then" Then
            Return False
        End If
        Return True
    End Function
    Private Sub btnXacNhan_Click(sender As System.Object, e As System.EventArgs) Handles btnXacNhan.Click
        If KiemTra() = True Then
            Dim tkDTO As New TaiKhoanDTO
            Dim tkBUS As New TaiKhoanBUS

            tkDTO.MaTaiKhoan = 1
            tkDTO.TenTaiKhoan = txtTenDangNhap.Text
            tkDTO.MatKhau = txtMatKhau.Text

            If cbLoaiTaiKhoan.Text = "Sinh Viên" Then
                tkDTO.MaLoai = 2
            ElseIf cbLoaiTaiKhoan.Text = "Chủ Nhà" Then
                tkDTO.MaLoai = 3
            ElseIf cbLoaiTaiKhoan.Text = "Quản Trị" Then
                tkDTO.MaLoai = 1
            End If
            tkDTO.TrangThai = 1

            If tkBUS.CheckID(tkDTO) = False Then
                Dim flag As Boolean = tkBUS.Insert(tkDTO)
                If flag = True Then
                    Dim tk As New TaiKhoanDTO
                    tk = tkBUS.GetItemID(txtTenDangNhap.Text)
                    If cbLoaiTaiKhoan.Text = "Sinh Viên" Then
                        Dim svDTO As New SinhVienDTO
                        Dim svBUS As New SinhVienBUS

                        svDTO.MaTaiKhoan = tk.MaTaiKhoan
                        svDTO.HoTen = txtHoTen.Text
                        svDTO.Email = txtEmail.Text
                        svDTO.DienThoai = txtDienThoai.Text
                        svDTO.CMND = txtCMND.Text
                        svDTO.Truong = txtTruong.Text
                        svDTO.MaSinhVien = 1
                        If svBUS.Insert(svDTO) = True Then
                            MessageBox.Show("Tài khoản đã được tạo thành công", "Thông báo")
                            Me.Close()
                        Else
                            MessageBox.Show("Tài khoản không tạo được", "Thông báo")
                            Me.Close()
                        End If
                    ElseIf cbLoaiTaiKhoan.Text = "Chủ Nhà" Then

                        Dim chunhaDTO As New ChuNhaDTO
                        Dim chunhaBUS As New ChuNhaBUS

                        chunhaDTO.MaTaiKhoan = tk.MaTaiKhoan
                        chunhaDTO.HoTen = txtHoTen.Text
                        chunhaDTO.Email = txtEmail.Text
                        chunhaDTO.DienThoai = txtDienThoai.Text
                        chunhaDTO.CMND = txtCMND.Text
                        chunhaDTO.MaChuNha = 1

                        If chunhaBUS.Insert(chunhaDTO) = True Then
                            MessageBox.Show("Tài khoản đã được tạo thành công", "Thông báo")
                            Me.Close()
                        Else
                            MessageBox.Show("Tài khoản không tạo được", "Thông báo")
                            Me.Close()
                        End If
                    ElseIf cbLoaiTaiKhoan.Text = "Quản Trị" Then
                        Dim quantriDTO As New QuanTriDTO
                        Dim quantriBUS As New QuanTriBUS

                        quantriDTO.MaTaiKhoan = tk.MaTaiKhoan
                        quantriDTO.HoTen = txtHoTen.Text
                        quantriDTO.Email = txtEmail.Text
                        quantriDTO.DienThoai = txtDienThoai.Text
                        quantriDTO.CMND = txtCMND.Text
                        quantriDTO.MaQuanTri = 1

                        If quantriBUS.Insert(quantriDTO) = True Then
                            MessageBox.Show("Tài khoản đã được tạo thành công", "Thông báo")
                            Me.Close()
                        Else
                            MessageBox.Show("Tài khoản không tạo được", "Thông báo")
                            Me.Close()
                        End If
                    End If
                End If
            End If
        Else
            MessageBox.Show("Phải nhập đầy đủ thông tin", "Thông báo")

        End If
    End Sub

    Private Sub txtTenDangNhap_Leave(sender As System.Object, e As System.EventArgs) Handles txtTenDangNhap.Leave
        If txtTenDangNhap.Text <> "" And txtTenDangNhap.Text.Length < 8 Then
            txtTenDangNhap.Text = ""
            MessageBox.Show("Tên đăng nhập phải có ít nhất 8 kí tự", "Thông báo")
        End If
    End Sub

    Private Sub txtXacNhanMatKhau_Leave(sender As System.Object, e As System.EventArgs) Handles txtXacNhanMatKhau.Leave
        If txtXacNhanMatKhau.Text <> txtMatKhau.Text And txtXacNhanMatKhau.Text <> "" Then
            txtMatKhau.Text = ""
            txtXacNhanMatKhau.Text = ""
            MessageBox.Show("Mật khẩu nhập lại không khớp", "Thông báo")
        End If
    End Sub

    Private Sub txtHoTen_Leave(sender As System.Object, e As System.EventArgs) Handles txtHoTen.Leave

    End Sub

    Private Sub txtEmail_Leave(sender As System.Object, e As System.EventArgs) Handles txtEmail.Leave
        Try
            If IsDNSMailAddr(txtEmail.Text) = False Then
                MessageBox.Show("Email không hợp lệ", "Thông báo")
            End If
        Catch ex As Exception
            MessageBox.Show("Email không hợp lệ", "Thông báo")
        End Try
    End Sub

    Private Sub frmAD_DangKyTaiKhoan_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        cbLoaiTaiKhoan.Items.Add("Sinh Viên")
        cbLoaiTaiKhoan.Items.Add("Chủ Nhà")
        cbLoaiTaiKhoan.Items.Add("Quản Trị")
        cbLoaiTaiKhoan.SelectedIndex = 0
    End Sub

    Private Sub cbLoaiTaiKhoan_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cbLoaiTaiKhoan.SelectedIndexChanged

    End Sub
End Class